跳到主要内容

MySQL基本增删改

插入(insert)

-- 语法
insert into 表名(字段1,字段2,....)
value(1,.....)

-- 例
INSERT INTO `girls`.`boys` (boyName, id, userCP)
VALUES
(
'boyName:varchar',
'id:mediumint',
userCP:int
),
(
'boyName:varchar',
'id:mediumint',
userCP:int
),
(
'boyName:varchar',
'id:mediumint',
userCP:int
);
  • 插入的值类型要与列类型一致或兼容
  • 不可为 null 的列必须插入值
  • 可以为 null 的列直接写 null 表示跳过

修改(update)

修改单表的数据

update 表名
set 字段=新值,字段=新值
where 筛选条件;

修改多表的数据

update1 
[join type] join2
on 连接条件
set 字段=
[where 筛选条件]

删除(delete)

delete 
from 表名
where 筛选条件

多表删除

delete 需要删的表
from1
[join type] join2
on 连接条件
where 筛选条件

清空表(truncate)

使用上面 delete 的方式清空表数据有个缺点,就是索引不是从零开始,所以这时就需要使用这个 truncate 关键字来清空表了(truncate 是用来清空数据的,所以不支持 where 之类的)

truncate table 表名

truncate 有以下几个特点要注意:

  • truncate 删除效率高
  • 假如要删除表中的自增长列,如果使用 delete 删除再次插入数据还是从上次的断点开始,使用 truncate 删除后,再插入数据则是从 1 开始
  • truncate 删除不能回滚,delete 删除可以回滚

创建库、表

create database 库名 -- 但是如果已经存在这个库则会报错
-- 所以一般是用下面这个
create database if not exists 库名

use 库名

-- 创建一个临时用户表
CREATE TABLE IF NOT EXISTS `TestUser_tb`(
`id` INT UNSIGNED AUTO_INCREMENT KEY COMMENT '用户编号',
`username` VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
`password` CHAR(32) NOT NULL COMMENT '密码',
`email` VARCHAR(50) NOT NULL UNIQUE COMMENT '邮箱',
`age` TINYINT UNSIGNED NOT NULL DEFAULT 18 COMMENT '年龄',
`sex` ENUM('man','woman','baomi') NOT NULL DEFAULT 'baomi' COMMENT '性别',
`tel` CHAR(11) NOT NULL UNIQUE COMMENT '电话',
`addr` VARCHAR(50) NOT NULL DEFAULT 'beijing' COMMENT '地址',
`card` CHAR(18) NOT NULL UNIQUE COMMENT '身份证号',
`married` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0代表未结婚,1代表已结婚',
`salary` FLOAT(8,2) NOT NULL DEFAULT 0 COMMENT '薪水'
)ENGINE=INNODB DEFAULT CHARSET=UTF8;

删除库、表

drop database 库名
-- 最好也使用下面这个
drop database if exists 库名

drop table if exists 表名 -- 同理

修改表字段

-- 修改表的名称
alter table 原表名 rename to 新表名

-- 修改字段的名,因为修改是覆盖制的,所以要保持之前的类型,主键,索引之类的就要重写加上
alter table 表名 change column 列名 新列名 类型(原本是什么就填什么)


-- 修改列的类型或约束
-- after 是放在哪个字段后面,使用了 first 就不用加字段名了,因为是第一行
alter table 表名 modify column 列名 类型 [first|after 字段名]

-- 添加新列
alter table 表名 add column 新列名 类型

-- 删除列
alter table 表名 drop column 列名

复制表数据

-- 仅复制结构
create table 新表名 like 要复制的表;

-- 复制表的结构+数据
create table 新表名 select * from 要复制的表;

-- 只复制部分数据
create table 新表名
select 字段1,字段2
from 要复制的表名
where 筛选条件;

-- 仅复制某些字段(不包含数据)
create table 新表名
select 字段1,字段2
from 要复制的表名
where 0; -- 0 表示 false,即全部数据都不复制